/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ipartek.formacion.gestformwww.controlador;

import com.ipartek.formacion.gestformwww.modelo.ModeloAlumno;

import com.ipartek.formacion.gestformwww.modelo.beans.Alumno;

import com.ipartek.formacion.gestformwww.modelo.beans.excepciones.GestorFormacionExcepcion;
import java.util.ArrayList;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Borja y Karmele
 */
public class VisualizarEnviarMailAccion implements Accion {

  
    private final String visualizarcursos = "visualizar-curso-accion";
    private final String visualizarconvocatorias = "visualizar-convocatoria-accion";

    public AccionRouter ejecuta(HttpServlet servlet, HttpServletRequest request, HttpServletResponse response) {
        ModeloAlumno malumno = (ModeloAlumno) servlet.getServletContext().getAttribute("ModeloAlumno");
    AccionServlet as=(AccionServlet) servlet;
        HttpSession sesion = request.getSession();
        ResourceBundle bundle = (ResourceBundle) servlet.getServletContext().getAttribute("mailPlantillas-mapeo");
        AccionRouter router = null;
        ArrayList<Alumno> alumnos = new ArrayList<Alumno>();
      
        ArrayList<String> errores = new ArrayList<String>();
        ArrayList<ArrayList<String>> listaplantillas = new ArrayList<ArrayList<String>>();
        String[] id;
        int idCurso;
        int idConvocatoria;

        if (sesion.getAttribute("usuario") != null && request.getMethod().equalsIgnoreCase("POST")) {
            if (request.getParameter("idCurso") != null) {
                if (request.getParameterValues("listaIdAlumno") != null) {
                    id = request.getParameterValues("listaIdAlumno");
                    idCurso = Integer.parseInt(request.getParameter("idCurso"));
                    request.setAttribute("idCurso", idCurso);
                    for (String d : id) {
                        try {
                            alumnos.add(malumno.visualizarAlumno(Integer.parseInt(d), idCurso));
                        } catch (GestorFormacionExcepcion ex) {
                            Logger.getLogger(VisualizarEnviarMailAccion.class.getName()).log(Level.SEVERE, null, ex);
                            sesion.setAttribute("excepciones", ex.getMessage());
                        }
                    }
                    //Numero de plantillas guardadas
                    int numero = bundle.keySet().size() / 3;
                    int i;
                    for (i = 1; i <= numero; i++) {
                        ArrayList<String> plantilla = new ArrayList<String>();
                        plantilla.add(bundle.getString("plantilla" + i + ".titulo"));
                        plantilla.add(bundle.getString("plantilla" + i + ".asunto"));
                        plantilla.add(bundle.getString("plantilla" + i + ".cuerpo"));
                        listaplantillas.add(plantilla);
                    }
                    request.setAttribute("plantillas", listaplantillas);

                    request.setAttribute("listaalumnos", alumnos);
                    request.setAttribute("contenido", "visualizar-enviar-email");
                    router = new AccionRouter("principal");
                } else {
                    errores.add("error-seleccionar-mail");
                    request.setAttribute("errores", errores);
                    try {
                        router=as.getFactory().getAction(as.getNombreClaseRecurso(visualizarcursos),servlet.getClass().getClassLoader()).ejecuta(servlet, request, response);
                    } catch (ClassNotFoundException ex) {
                        Logger.getLogger(VisualizarEnviarMailAccion.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (InstantiationException ex) {
                        Logger.getLogger(VisualizarEnviarMailAccion.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (IllegalAccessException ex) {
                        Logger.getLogger(VisualizarEnviarMailAccion.class.getName()).log(Level.SEVERE, null, ex);
                    }
                    
                }
            } else if (request.getParameter("idConv") != null) {
                if (request.getParameterValues("listaIdCandidato") != null) {
                    id = request.getParameterValues("listaIdCandidato");
                    idConvocatoria = Integer.parseInt(request.getParameter("idConv"));
                    request.setAttribute("idConv", idConvocatoria);
                    for (String d : id) {
//                        try {
//                            candidatos.add(mcandidato.getCandidatoConvocatoria(Integer.parseInt(d), idConvocatoria));
//                        } catch (GestorFormacionExcepcion ex) {
//                            sesion.setAttribute("excepciones", ex.getMessage());
//                            Logger.getLogger(VisualizarEnviarMailAccion.class.getName()).log(Level.SEVERE, null, ex);
//                        }
                    }
                    //Numero de plantillas guardadas
                    int numero = bundle.keySet().size() / 3;
                    int i;
                    for (i = 1; i <= numero; i++) {
                        ArrayList<String> plantilla = new ArrayList<String>();
                        plantilla.add(bundle.getString("plantilla" + i + ".titulo"));
                        plantilla.add(bundle.getString("plantilla" + i + ".asunto"));
                        plantilla.add(bundle.getString("plantilla" + i + ".cuerpo"));
                        listaplantillas.add(plantilla);
                    }
                    request.setAttribute("plantillas", listaplantillas);

                  
                    request.setAttribute("contenido", "visualizar-enviar-email-candidato");
                    router = new AccionRouter("principal");
                } else {
                    errores.add("error-seleccionar-mail");
                    request.setAttribute("errores", errores);
                    try {
                        router=as.getFactory().getAction(as.getNombreClaseRecurso(visualizarconvocatorias),servlet.getClass().getClassLoader()).ejecuta(servlet, request, response);
                    } catch (ClassNotFoundException ex) {
                        Logger.getLogger(VisualizarEnviarMailAccion.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (InstantiationException ex) {
                        Logger.getLogger(VisualizarEnviarMailAccion.class.getName()).log(Level.SEVERE, null, ex);
                    } catch (IllegalAccessException ex) {
                        Logger.getLogger(VisualizarEnviarMailAccion.class.getName()).log(Level.SEVERE, null, ex);
                    }
                   
                }
            } else {
                router = new AccionRouter("inicio");
            }
        } else {
            router = new AccionRouter("inicio");
        }
        return router;

    }

   
}
